Linux ๋ณด์•ˆ ยท ์›๊ฒฉ ยท ๋ฐฉํ™”๋ฒฝ ยท DNS ์ •๋ฆฌ

NOTE

๋น„๋Œ€์นญํ‚ค์˜ ํ•œ๊ณ„์™€ CA, SSH ๋ณด์•ˆยทํ‚ค ์ธ์ฆยทSCP, firewalld(Zone) ๋ฐฉํ™”๋ฒฝ, DNS ๊ฐœ๋…ยท์กฐํšŒยทBIND ์„œ๋ฒ„ ๊ตฌ์ถ•์„ ์ •๋ฆฌํ•œ ๋ฆฌ๋ˆ…์Šค ๋ณด์•ˆ/๋„คํŠธ์›Œํฌ ๋…ธํŠธ.

๐Ÿ“Œ ๊ฐœ๋…

๋น„๋Œ€์นญํ‚ค์˜ ํ•œ๊ณ„์™€ ํ•ด๊ฒฐ์ฑ…

  • ๋‹จ์ : ๊ณต๊ฐœํ‚ค ์ž์ฒด๊ฐ€ ์ง„์งœ์ธ์ง€ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Œ โ†’ ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ(MITM) ๊ฐ€๋Šฅ
  • MITM ๊ณต๊ฒฉ ํ๋ฆ„
    1. A๋Š” ํ•ด์ปค์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”
    2. ํ•ด์ปค๊ฐ€ ์ž์‹ ์˜ ๊ฐœ์ธํ‚ค๋กœ ๋ณตํ˜ธํ™” โ†’ ๋‚ด์šฉ ์กฐ์ž‘
    3. ํ•ด์ปค๊ฐ€ B์˜ ๊ณต๊ฐœํ‚ค๋กœ ์žฌ์•”ํ˜ธํ™”
    4. B๋Š” A๊ฐ€ ๋ณด๋‚ธ ์ •์ƒ ๋ฐ์ดํ„ฐ๋กœ ์ฐฉ๊ฐ
  • ํ•ด๊ฒฐ์ฑ…: ์ œ3์˜ ์ธ์ฆ๊ธฐ๊ด€(CA)์ด ๊ณต๊ฐœํ‚ค์˜ ์ง„์œ„๋ฅผ ์ธ์ฆ(๋Œ€ํ‘œ ์˜ˆ: SSL/TLS)

SSH ๋ณด์•ˆ ๊ตฌ์กฐ

๋ฒ„์ „ํŠน์ง•
SSH v1MITM ๊ณต๊ฒฉ ์ทจ์•ฝ
SSH v2Diffie-Hellman ์‚ฌ์šฉ
  • SSH v2: ๊ณต๊ฐœํ‚ค ๊ธฐ๋ฐ˜์œผ๋กœ ๋Œ€์นญํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดํ›„ ํ†ต์‹ ์€ ๋Œ€์นญํ‚ค๋กœ ์•”ํ˜ธํ™”(ํ‚ค ์ „๋‹ฌ ๋ฌธ์ œ ํ•ด๊ฒฐ + ์†๋„ ํ™•๋ณด)
  • SSH ์„œ๋ฒ„ ์„ค์ •(/etc/ssh/sshd_config): Port(ํฌํŠธ ๋ณ€๊ฒฝ), ListenAddress(ํŠน์ • IP๋งŒ ํ—ˆ์šฉ). ๊ธฐ๋ณธ ํฌํŠธ 22, ๊ธฐ๋ณธ ListenAddress 0.0.0.0
  • ~/.ssh/known_hosts: ์ ‘์†ํ–ˆ๋˜ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค ์ €์žฅ

firewalld (Zone ๊ธฐ๋ฐ˜ ๋ฐฉํ™”๋ฒฝ)

์ธํ„ฐํŽ˜์ด์Šค โ†” Zone ์—ฐ๊ฒฐ.

Zone์˜๋ฏธ
dropํŒจํ‚ท ํ๊ธฐ
reject๊ฑฐ๋ถ€ ์‘๋‹ต
public๊ณต๊ฐœ ์˜์—ญ
home๋‚ด๋ถ€ ์„œ๋น„์Šค ํ—ˆ์šฉ
dmz์™ธ๋ถ€ ๊ณต๊ฐœ
trust๋ชจ๋“  ํ—ˆ์šฉ

DNS

  • ์—ญํ• : ๋„๋ฉ”์ธ ์ด๋ฆ„ โ†’ IP ์ฃผ์†Œ ๋ณ€ํ™˜
  • FQDN ์˜ˆ์‹œ: docs.google.com (docs = ํ˜ธ์ŠคํŠธ, google.com = ๋„๋ฉ”์ธ)
  • ์กฐํšŒ ์ˆœ์„œ: /etc/hosts โ†’ DNS ์บ์‹œ โ†’ DNS ์„œ๋ฒ„ ์งˆ์˜

์ „์ฒด ํ๋ฆ„ ์š”์•ฝ

Client โ†’ resolv.conf โ†’ DNS โ†’ zone โ†’ record โ†’ IP ๋ฐ˜ํ™˜

์ตœ์ข… ์•”๊ธฐ: ๋น„๋Œ€์นญํ‚ค โ†’ CA โ†’ SSH โ†’ firewall โ†’ DNS

๐Ÿ’ป ์˜ˆ์‹œ

SSH ๊ธฐ๋ณธ / ํ‚ค ์ธ์ฆ / SCP

ssh ๊ณ„์ •@IP
ssh -X ๊ณ„์ •@IP           # GUI ํฌ์›Œ๋”ฉ (์›๊ฒฉ gedit ์‹คํ–‰, ํŒŒ์ผ์€ ์›๊ฒฉ ์„œ๋ฒ„ ์ €์žฅ)
 
# ํ‚ค ๊ธฐ๋ฐ˜ ์ธ์ฆ (Passwordless)
ssh-keygen               # ๊ฐœ์ธํ‚ค + ๊ณต๊ฐœํ‚ค ์ƒ์„ฑ (๊ฐœ์ธํ‚ค ์œ ์ถœ ๊ธˆ์ง€)
ssh-copy-id ๊ณ„์ •@IP       # ๊ณต๊ฐœํ‚ค โ†’ ์„œ๋ฒ„ authorized_keys
 
# SCP (์›๊ฒฉ ํŒŒ์ผ ๋ณต์‚ฌ)
scp ๋กœ์ปฌํŒŒ์ผ ๊ณ„์ •@IP:์›๊ฒฉ๊ฒฝ๋กœ
scp ./test root@10.0.2.30:/root/test

๋ฐฉํ™”๋ฒฝ (firewalld)

# Zone ํ™•์ธ
firewall-cmd --get-zones
firewall-cmd --get-default-zone
firewall-cmd --info-zone=public
 
# ์„œ๋น„์Šค / ํฌํŠธ ๊ด€๋ฆฌ
firewall-cmd --list-services
firewall-cmd --add-service=http
firewall-cmd --remove-service=http
firewall-cmd --add-port=8080/tcp
firewall-cmd --remove-port=8080/tcp
 
# ์˜๊ตฌ ์„ค์ •
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

DNS ์กฐํšŒ

nslookup naver.com
dig @8.8.8.8 domain
host domain

DNS ์„œ๋ฒ„ ๊ตฌ์ถ• (BIND, ์บ์‹œ ์ „์šฉ)

yum install -y bind bind-chroot
 
# /etc/named.conf
#   listen-on port 53 { any; };
#   listen-on-v6 port 53 { none; };
#   allow-query { any; };
 
systemctl restart named
systemctl enable named
 
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
 
dig @DNS์„œ๋ฒ„IP domain      # ํด๋ผ์ด์–ธํŠธ ํ™•์ธ

์ฃผ DNS ์„œ๋ฒ„ (Master) ๊ตฌ์ถ•

# Zone ์„ค์ • (/etc/named.conf)
# zone "linux.com" IN {
#     type master;
#     file "linux.com.db";
#     allow-update { none; };
# };
named-checkconf
 
# Zone ํŒŒ์ผ (/var/named/linux.com.db) ํ•ต์‹ฌ ๋ ˆ์ฝ”๋“œ: SOA, NS, A, www.linux.com, ns.linux.com
chmod -R 754 /var/named
 
# Client ์„ค์ •
vi /etc/resolv.conf
# nameserver DNS์„œ๋ฒ„IP
nslookup